/*
Copyright 2019 The Vitess Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package events

import (
	base "vitess.io/vitess/go/vt/events"
	"vitess.io/vitess/go/vt/topo"

	topodatapb "vitess.io/vitess/go/vt/proto/topodata"
)

// MigrateServedFrom is an event that describes a single step in the process of
// adding or removing a forwarding rule to have certain ServedTypes served by
// another keyspace.
type MigrateServedFrom struct {
	base.StatusUpdater

	KeyspaceName     string
	SourceShard      topo.ShardInfo
	DestinationShard topo.ShardInfo
	ServedType       topodatapb.TabletType
	Reverse          bool
}

// MigrateServedTypes is an event that describes a single step in the process of
// switching a ServedType from one set of shards to another.
type MigrateServedTypes struct {
	base.StatusUpdater

	KeyspaceName      string
	SourceShards      []*topo.ShardInfo
	DestinationShards []*topo.ShardInfo
	ServedType        topodatapb.TabletType
	Reverse           bool
}
